﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections.ObjectModel;

namespace Modelo.Sistema
{
    public class CatalogoMatPrimas
    {
        private static CatalogoMatPrimas _Instancia;
        public static CatalogoMatPrimas ObtenerInstancia()

        {
            if (_Instancia == null)
            {
                _Instancia = new CatalogoMatPrimas();
            }
            return _Instancia;
        }
        
        private List<Entidades.Sistema.MateriaPrima> Col_MateriaPrima;

        private CatalogoMatPrimas()
        {
            Col_MateriaPrima = Mapping.Sistema.MappingMateriaPrima.ConsultarMateriaPrima();
        }
      
        public ReadOnlyCollection<Entidades.Sistema.MateriaPrima> Listarmatprima()
        {
            return Col_MateriaPrima.AsReadOnly();
        }

        public bool AgregarMatprima(Entidades.Sistema.MateriaPrima oMateriaPrima , Entidades.Sistema.TipoMateriaPrima oTipoMateriaPrima, Entidades.Sistema.Unidad oUnidad)
        {
            Col_MateriaPrima.Add(oMateriaPrima);
            return Mapping.Sistema.MappingMateriaPrima.AgregarMateriaPrima(oMateriaPrima, oTipoMateriaPrima, oUnidad);
        }

        public bool EliminarMatprima(Entidades.Sistema.MateriaPrima oMateriaPrima)
        {
            Col_MateriaPrima.Remove(oMateriaPrima);
            return Mapping.Sistema.MappingMateriaPrima.EliminarMateriaPrima(oMateriaPrima);
        }
        public void ModificarMatPrim(Entidades.Sistema.MateriaPrima oMateriaPrima, Entidades.Sistema.TipoMateriaPrima oTipoMateriaPrima, Entidades.Sistema.Unidad oUnidad)
        {
            Mapping.Sistema.MappingMateriaPrima.ModificarMateriaPrima(oMateriaPrima, oTipoMateriaPrima, oUnidad);
            Col_MateriaPrima.Remove(oMateriaPrima);
            Col_MateriaPrima.Add(oMateriaPrima);
        }

        public bool ValidarExistencia(Entidades.Sistema.MateriaPrima oMateriaPriman)
        {
            if (this.Col_MateriaPrima.Count(omatpri => omatpri.cod_materiaprima == oMateriaPriman.cod_materiaprima) == 0)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
    }
}
